home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / shells / scsh-0.4 / scsh-0 / scsh-0.4.2 / rts / enum.scm < prev    next >
Text File  |  1995-10-13  |  682b  |  26 lines

  1. ; -*- Mode: Scheme; Syntax: Scheme; Package: Scheme; -*-
  2. ; Copyright (c) 1993, 1994 Richard Kelsey and Jonathan Rees.  See file COPYING.
  3.  
  4.  
  5. ; This is file enum.scm.
  6.  
  7. ;;;; Enumerated types
  8.  
  9. ;   (enumerand->name <integer> <e-type>) => a symbol
  10. ;   (name->enumerand <symbol>  <e-type>) => an integer
  11.  
  12. (define (enumerand->name e e-type)
  13.   (vector-ref e-type e))
  14.  
  15. (define (name->enumerand e e-type)
  16.   (let loop ((i 0))            ;vector-posq
  17.     (if (< i (vector-length e-type))
  18.     (if (eq? e (vector-ref e-type i))
  19.         i
  20.         (loop (+ i 1)))
  21.     #f)))
  22.  
  23. (define (definitely-name->enumerand e e-type e-type-name)
  24.   (or (name->enumerand e e-type)
  25.       (error "unknown enumerand name" e-type-name e)))
  26.